查看原文
科技

C# 使用 System.Speech 轻松朗读文本

iamrick 技术老小子
2024-09-04

摘要


System.Speech 命名空间提供了在 WinForms 应用程序中进行语音合成(TTS)的功能。您可以使用 System.Speech 中的类和方法来读取文本并将其转换为语音。

正文


nuget 安装System.Speech

常用属性和方法

以下是 System.Speech 命名空间中一些常用的属性和方法:

SpeechSynthesizer 类

  • SpeakAsync:异步将指定的文本转换为语音并播放。

    用于将指定的文本转换为语音并进行播放。该方法是异步的,它会立即返回,而不会等待语音播放完成。

  • Speak:将指定的文本转换为语音并播放。

  • Volume:获取或设置语音合成器的音量级别。

    Volume 属性用于获取或设置语音合成器的音量级别。它的取值范围是从 0 到 100,默认值为 100。

  • Rate:获取或设置语音合成器的语速。

    Rate 属性用于获取或设置语音合成器的语速。它的取值范围是从 -10 到 10,默认值为 0。负值表示较慢的语速,正值表示较快的语速。

  • SelectVoice:选择要用于语音合成的语音。

    方法用于选择要用于语音合成的语音。可以通过传递语音的名称或标识符来选择语音。如果没有指定语音,系统将使用默认语音。


示例

以下是在 WinForms 中使用 System.Speech 进行文本转语音的示例:

public partial class Form1 : Form{ private SpeechSynthesizer synthesizer; public Form1() { InitializeComponent(); // 初始化语音合成器 synthesizer = new SpeechSynthesizer();
// 选择中文语音 synthesizer.SelectVoiceByHints(VoiceGender.Female , VoiceAge.Adult, 0, new System.Globalization.CultureInfo("zh-CN"));
// 设置音量和语速 synthesizer.Volume = 100; synthesizer.Rate = 0;
}
private void btnPlay_Click(object sender, EventArgs e) { // 将文本转换为语音并播放 synthesizer.SpeakAsync(txtValue.Text); }
protected override void OnFormClosing(FormClosingEventArgs e) { // 关闭语音合成器 synthesizer.Dispose(); base.OnFormClosing(e); }
}

请确保您的系统上已安装中文语音包,并且可以通过 SelectVoiceByHints 方法选择到中文语音。如果您的系统上没有中文语音包,您可以尝试安装或更新语音包,或者使用其他支持中文的语音合成引擎。

如果你从事上位机,自动化,机器视觉,IOT项目,数字化项目,欢迎加我微信,大家可以一起讨论学习,如果遇到技术问题可以提出来,我会尽量帮你解决问题,但不能保证喔,毕竟个人水平有限!




个人观点,仅供参考
继续滑动看下一个
技术老小子
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存